<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>复杂案例</title>
    <script type="text/javascript" src="../../jquery.js"></script>
    <script src="../../ui/om-core.js"></script>
    <script src="../../ui/om-mouse.js"></script>
    <script src="../../ui/om-resizable.js"></script>
    <script src="../../ui/om-draggable.js"></script>
    <script src="../../ui/om-position.js"></script>
    <script src="../../ui/om-combo.js"></script>
    <script type="text/javascript" src="../../ui/om-button.js"></script>
    <script src="../../ui/om-numberfield.js"></script>
    <script src="../../ui/om-calendar.js"></script>
    <script type="text/javascript" src="../../ui/om-grid.js"></script>
    <script type="text/javascript" src="../../ui/om-grid-roweditor.js"></script>
    <link rel="stylesheet" type="text/css" href="../../themes/default/om-all.css" />
    <link rel="stylesheet" type="text/css" href="../common/css/demo.css" />
    <!-- view_source_begin -->
    <script type="text/javascript">
        $(document).ready(function() {
            $('#grid').omGrid({
                limit:10,
                title : '表格',
                width:600,
                height : 300,
                colModel : [ {header : 'ID', name : 'id', width : 100, align : 'center',editor:{}}, 
                             {header : '地区', name : 'city', width : 120, align : 'left',editor:{}}, 
                             {header : '地址', name : 'address', align : 'left', width : 'autoExpand',editor:{}} ],
				dataSource : "griddata.do?method=fast",
				onBeforeEdit : function(){
					$('#demo >:button').attr("disabled",true);
				},
				onAfterEdit : function(){
					$('#demo >:button').removeAttr("disabled");
				},
				onCancelEdit : function(){
					$('#demo >:button').removeAttr("disabled");
				}
            });
            
            $('#add').click(function(){
            	$('#grid').omGrid('insertRow',0,{id:100});
            });
            $('#del').click(function(){
            	var dels = $('#grid').omGrid('getSelections');
            	if(dels.length <= 0 ){
            		alert('请选择删除的记录！');
            		return;
            	}
            	$('#grid').omGrid('deleteRow',dels[0]);
            });
            $('#save').click(function(){
            	var data = $('#grid').omGrid('getChanges');
            	/*****此处传递data到后台并处理*******/
            	/*****保存成功之后执行如下操作********/
            	 $('#grid').omGrid('saveChanges');
            	/******或者执行$('#grid').omGrid('reload');***/
            });
        });
    </script>
    <!-- view_source_end -->
</head>
<body>
    <!-- view_source_begin -->
    <div id="demo" style="margin-left:30px;margin-top:20px">
        <input type="button" id="add" value="新增"/>
        <input type="button" id="del" value="删除"/>
        <input type="button" id="save" value="保存修改"/>
    	<table id="grid"></table>
    </div>
    <!-- view_source_end -->
    
    <div id="view-desc">
       <p>
                      对grid进行增删改，分别调用了insertRow、deleteRow、双击某行的操作，保存通过getChanges方法获取对grid的修改，数据格式为type["update","insert","delete"]。
       </p>
       <p>
        omGrid行编辑插件可以为omGrid提供行编辑的功能，它支持修改行信息，动态添加新行，动态删除行，取消行编辑，回滚编辑操作等一系列的功能，详情请看omGrid组件关于行编辑插件的方法
        (cancleEdit,cancleChanges,editRow,deleteRow,getChanges,insertRow,saveChanges)。</p>
		<p>
                       要使omGrid成为行可编辑的，只需要配置editor选项。如下<br/>
        <pre>
        $('#grid').omGrid({
            colModel : 
                [{	
        		    header:"编号",
        	        name:"id",
        		    editor:{editable:false}
        		},
		        {
		        	header:"姓名",
		        	name:"name",
		        	editor:{
		        	    rules:["required",true,"姓名是必填的"],
		        	    type:"text",
		        	    editable:true,
		        	    name:"userName"}}
            });
        </pre>
        editor配置项详细说明如下:
        <table class='config-desc' cellspacing=0>
        	<tr>
        		<td>配置项</td>
        		<td>说明</td>
        	</tr>
        	<tr>
        		<td>type</td>
        		<td>列编辑的类型，支持"text","omCalendar","omCombo","omNumberField"，默认值为"text"</td>
        	</tr>
        	<tr>
        		<td>options</td>
        		<td>创建所对应类型组件所需的配置项 ，详情请看各个类型的组件文档。</td>
        	</tr>
        	<tr>
        		<td>name</td>
        		<td>由于检验时需要输入域拥有name属性，此属性作为这些输入域的name属性和id属性，如果不提供此属性，则用colModel中列配置项的name属性 </td>
        	</tr>
        	<tr>
        		<td>rules</td>
        		<td>	[]或者[[],[]]。列编辑框的检验规则，跟omValidate的校验规则是一致的。如["required",true,"此域不可以为空"]或者[["min",10,"不可以小于10"],["max",100,"不可以大于100"]]，
你也可以用$.validator.addMethod("methodName", functionName,defaultMessage)添加自定义校验规则，详情请看omValidate校验插件。  </td>
        	</tr>
        	<tr>
        		<td>editable</td>
        		<td>列是否可编辑，为Boolean或者function。当为function时，返回false表示此列不可编辑。</td>
        	</tr>
        	<tr>
        		<td>renderer(value , rowData)</td>
        		<td>如果列是不可编辑的，并且提供了此属性（是个方法），那么此方法的返回值会替代默认产生的只读input域 </td>
        	</tr>
        	<tr>
        		<td>getValue</td>
        		<td>当使用“custom”类型(其它类型无效)在点击“确定”按钮时，组件通过此方法获取值进行回填。</td>
        	</tr>
        </table>
        <br/>
        特别说明:
        <ul>
        	<li>如果某个列配置项没有editor属性，则认为此列不可编辑，默认在编辑时渲染成一个只读的input</li>
        	<li>如果配置了editor属性，但editor没有editable属性，则列是可编辑的，否则要看editable的值:
        		<ul>
        			<li>editable=true表示可编辑,editable=false表示不可编辑</li>
        			<li>editable为一个函数时，返回true表示可编辑，false表示不可编辑</li>
        		</ul>
        	</li>
        	<li>如果所有的列都不可编辑，那么默认情况下行编辑插件会失效。如果想新增行，并进行编辑，要设置editMode属性，详见属性editMode的说明。</li>
        </ul>
        </p>
    </div>
    <script type="text/javascript" src="../common/js/themeloader.js"></script>
</body>
</html>